<!DOCTYPE html>

<html
  xmlns="http://www.w3.org/1999/xhtml"
  >
  <head>
    <title>Parallel coordinates plot &#8211; from Data to Viz</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="generator" content="pandoc" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, shrink-to-fit=no"
    />
    <meta
      name="description"
      content="An extensive description of Parallel coordinates
plot. Definition, examples, input data, common caveats, tool to build it and potential alternatives."
    />
    <meta
      name="keywords"
      content="Data,Dataviz,Datavisualization,Plot,Chart,Graph,R,Python,D3,Learning,Caveat,Pitfall,Mistake,Classification"
    />
    <meta name="author" content="Yan Holtz and Conor Healy" />
    <link rel="icon" href="img/logo/data-to-viz.ico" />

    <!-- Control appearance when share by social media -->
    <meta property="og:title" content="Parallel coordinates plot" />
    <meta
      property="og:image"
      content="https://github.com/holtzy/data_to_viz/raw/master/img/section/Parallel1Small.png"
    />
    <meta
      property="og:description"
      content="An extensive description of Parallel coordinates
plot. Definition, examples, input data, common caveats, tool to build it and potential alternatives."
    />
    <meta
      property="og:url"
      content="www.data-to-viz.com/caveat/parallel.html"
    />
    <meta property="og:type" content="website" />

    <style>
      .myheader {
        background-image: url("https://github.com/holtzy/data_to_viz/raw/master/img/overview_RGG_faded.png");
        min-height: 300px;
        background-size: 100% 100%;

        /* Create the parallax scrolling effect */
        background-attachment: fixed;
        background-position: center;
        background-repeat: no-repeat;
        background-size: cover;

        height: 100%;
        width: 100% !important;
      }
      .mytitle {
        text-transform: uppercase;
        font-family: "Montserrat";
        font-size: 200%;
        font-weight: 500;
        letter-spacing: 4px;
      }
    </style>

    <div class="myheader" style="text-align: center">
      <br />
      <a href="http://www.data-to-viz.com"
        ><img
          align="left"
          src="https://github.com/holtzy/data_to_viz/raw/master/img/logo/typo.png"
          style="width: 150px; vertical-align: top; margin-left: 5%"
      /></a>
      <br /><br />
      <br /><br />
      <a href="http://www.data-to-viz.com">
        <img
          src="https://github.com/holtzy/data_to_viz/raw/master/img/section/Parallel1Small.png"
      /></a>
      <br /><br />
      <p class="mytitle">Parallel coordinates plot</p>
      <p style="color: #d0d0d0">
        <a href="#definition">definition</a> - <a href="#mistake">mistake</a> -
        <a href="#related">related</a> -
        <a href="#code">code</a>
      </p>
    </div>

         <script src="libs/header-attrs-2.27/header-attrs.js"></script>
<script src="libs/jquery-3.6.0/jquery-3.6.0.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="libs/bootstrap-3.3.5/css/lumen.min.css" rel="stylesheet" />
<script src="libs/bootstrap-3.3.5/js/bootstrap.min.js"></script>
<script src="libs/bootstrap-3.3.5/shim/html5shiv.min.js"></script>
<script src="libs/bootstrap-3.3.5/shim/respond.min.js"></script>
<style>h1 {font-size: 34px;}
       h1.title {font-size: 38px;}
       h2 {font-size: 30px;}
       h3 {font-size: 24px;}
       h4 {font-size: 18px;}
       h5 {font-size: 16px;}
       h6 {font-size: 12px;}
       code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}
       pre:not([class]) { background-color: white }</style>
<script src="libs/navigation-1.1/tabsets.js"></script>
<script src="libs/navigation-1.1/codefolding.js"></script>
<link href="libs/pagedtable-1.1/css/pagedtable.css" rel="stylesheet" />
<script src="libs/pagedtable-1.1/js/pagedtable.js"></script>       <style type="text/css">
      code {
        white-space: pre;
      }
    </style>
    <style type="text/css">
      pre > code.sourceCode { white-space: pre; position: relative; }
      pre > code.sourceCode > span { line-height: 1.25; }
      pre > code.sourceCode > span:empty { height: 1.2em; }
      .sourceCode { overflow: visible; }
      code.sourceCode > span { color: inherit; text-decoration: inherit; }
      div.sourceCode { margin: 1em 0; }
      pre.sourceCode { margin: 0; }
      @media screen {
      div.sourceCode { overflow: auto; }
      }
      @media print {
      pre > code.sourceCode { white-space: pre-wrap; }
      pre > code.sourceCode > span { display: inline-block; text-indent: -5em; padding-left: 5em; }
      }
      pre.numberSource code
        { counter-reset: source-line 0; }
      pre.numberSource code > span
        { position: relative; left: -4em; counter-increment: source-line; }
      pre.numberSource code > span > a:first-child::before
        { content: counter(source-line);
          position: relative; left: -1em; text-align: right; vertical-align: baseline;
          border: none; display: inline-block;
          -webkit-touch-callout: none; -webkit-user-select: none;
          -khtml-user-select: none; -moz-user-select: none;
          -ms-user-select: none; user-select: none;
          padding: 0 4px; width: 4em;
          color: #aaaaaa;
        }
      pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
      div.sourceCode
        {   }
      @media screen {
      pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
      }
      code span.al { color: #ff0000; font-weight: bold; } /* Alert */
      code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
      code span.at { color: #7d9029; } /* Attribute */
      code span.bn { color: #40a070; } /* BaseN */
      code span.bu { color: #008000; } /* BuiltIn */
      code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
      code span.ch { color: #4070a0; } /* Char */
      code span.cn { color: #880000; } /* Constant */
      code span.co { color: #60a0b0; font-style: italic; } /* Comment */
      code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
      code span.do { color: #ba2121; font-style: italic; } /* Documentation */
      code span.dt { color: #902000; } /* DataType */
      code span.dv { color: #40a070; } /* DecVal */
      code span.er { color: #ff0000; font-weight: bold; } /* Error */
      code span.ex { } /* Extension */
      code span.fl { color: #40a070; } /* Float */
      code span.fu { color: #06287e; } /* Function */
      code span.im { color: #008000; font-weight: bold; } /* Import */
      code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
      code span.kw { color: #007020; font-weight: bold; } /* Keyword */
      code span.op { color: #666666; } /* Operator */
      code span.ot { color: #007020; } /* Other */
      code span.pp { color: #bc7a00; } /* Preprocessor */
      code span.sc { color: #4070a0; } /* SpecialChar */
      code span.ss { color: #bb6688; } /* SpecialString */
      code span.st { color: #4070a0; } /* String */
      code span.va { color: #19177c; } /* Variable */
      code span.vs { color: #4070a0; } /* VerbatimString */
      code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
            div.sourceCode {
        overflow-x: visible;
      }
          </style>
        <style type="text/css">
      pre:not([class]) {
        background-color: white;
      }
    </style>
           <style type="text/css">
      h1 {
        font-size: 34px;
      }
      h1.title {
        font-size: 38px;
      }
      h2 {
        font-size: 30px;
      }
      h3 {
        font-size: 24px;
      }
      h4 {
        font-size: 18px;
      }
      h5 {
        font-size: 16px;
      }
      h6 {
        font-size: 12px;
      }
      .table th:not([align]) {
        text-align: left;
      }
          </style>
         <link
      rel="stylesheet"
      href="style.css"
      type="text/css"
      
    />
      </head>

  <body>
        <style type="text/css">
      .main-container {
        max-width: 940px;
        margin-left: auto;
        margin-right: auto;
      }
      code {
        color: inherit;
        background-color: rgba(0, 0, 0, 0.04);
      }
      img {
        max-width: 100%;
        height: auto;
      }
      .tabbed-pane {
        padding-top: 12px;
      }
      button.code-folding-btn:focus {
        outline: none;
      }
    </style>

     
    <div class="container-fluid main-container">
      <!-- tabsets -->
      <script>
        $(document).ready(function () {
          window.buildTabsets("TOC");
        });
      </script>

      <!-- code folding -->
            <style type="text/css">
        .code-folding-btn {
          margin-bottom: 4px;
        }
      </style>
      <script>
        $(document).ready(function () {
                          window.initializeCodeFolding("hide" === "show");
                });
      </script>
         
                    <div class="fluid-row" id="header">
                        <div class="btn-group pull-right">
              <button
                type="button"
                class="btn btn-default btn-xs dropdown-toggle"
                data-toggle="dropdown"
                aria-haspopup="true"
                aria-expanded="false"
              >
                <span>Show Code</span> <span class="caret"></span>
              </button>
              <ul class="dropdown-menu" style="min-width: 50px">
                                <li><a id="rmd-show-all-code" href="#">Show All Code</a></li>
                <li><a id="rmd-hide-all-code" href="#">Hide All Code</a></li>
                                </ul>
            </div>

                         </div>

              <div class="mycontent">
<div id="definition" class="section level1">
<h1>Definition</h1>
<hr />
<p><code>Parallel plot</code> or parallel coordinates plot allows to
compare the feature of several individual observations
(<code>series</code>) on a set of numeric variables. Each vertical bar
represents a variable and often has its own scale. (The units can even
be different). Values are then plotted as series of lines connected
across each axis.</p>
<p><br></p>
<p>The <code>ìris</code> dataset provides four features (each
represented with a vertical line) for 150 flower samples (each
represented with a color line). Samples are grouped in three species.
The chart below highlights efficiently that setosa has smaller Petals,
but its sepal tends to be wider.</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" tabindex="-1"></a><span class="co"># Libraries</span></span>
<span id="cb1-2"><a href="#cb1-2" tabindex="-1"></a><span class="fu">library</span>(tidyverse)</span>
<span id="cb1-3"><a href="#cb1-3" tabindex="-1"></a><span class="fu">library</span>(hrbrthemes)</span>
<span id="cb1-4"><a href="#cb1-4" tabindex="-1"></a><span class="fu">library</span>(patchwork)</span>
<span id="cb1-5"><a href="#cb1-5" tabindex="-1"></a><span class="fu">library</span>(GGally)</span>
<span id="cb1-6"><a href="#cb1-6" tabindex="-1"></a><span class="fu">library</span>(viridis)</span>
<span id="cb1-7"><a href="#cb1-7" tabindex="-1"></a></span>
<span id="cb1-8"><a href="#cb1-8" tabindex="-1"></a><span class="co"># Data set is provided by R natively</span></span>
<span id="cb1-9"><a href="#cb1-9" tabindex="-1"></a>data <span class="ot">&lt;-</span> iris</span>
<span id="cb1-10"><a href="#cb1-10" tabindex="-1"></a></span>
<span id="cb1-11"><a href="#cb1-11" tabindex="-1"></a><span class="co"># Plot</span></span>
<span id="cb1-12"><a href="#cb1-12" tabindex="-1"></a>data <span class="sc">%&gt;%</span></span>
<span id="cb1-13"><a href="#cb1-13" tabindex="-1"></a>  <span class="fu">ggparcoord</span>(</span>
<span id="cb1-14"><a href="#cb1-14" tabindex="-1"></a>    <span class="at">columns =</span> <span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>, <span class="at">groupColumn =</span> <span class="dv">5</span>, <span class="at">order =</span> <span class="st">&quot;anyClass&quot;</span>,</span>
<span id="cb1-15"><a href="#cb1-15" tabindex="-1"></a>    <span class="at">showPoints =</span> <span class="cn">TRUE</span>,</span>
<span id="cb1-16"><a href="#cb1-16" tabindex="-1"></a>    <span class="at">title =</span> <span class="st">&quot;Parallel Coordinate Plot for the Iris Data&quot;</span>,</span>
<span id="cb1-17"><a href="#cb1-17" tabindex="-1"></a>    <span class="at">alphaLines =</span> <span class="fl">0.3</span></span>
<span id="cb1-18"><a href="#cb1-18" tabindex="-1"></a>    ) <span class="sc">+</span></span>
<span id="cb1-19"><a href="#cb1-19" tabindex="-1"></a>  <span class="fu">scale_color_viridis</span>(<span class="at">discrete=</span><span class="cn">TRUE</span>) <span class="sc">+</span></span>
<span id="cb1-20"><a href="#cb1-20" tabindex="-1"></a>  <span class="fu">theme_ipsum</span>()<span class="sc">+</span></span>
<span id="cb1-21"><a href="#cb1-21" tabindex="-1"></a>  <span class="fu">theme</span>(</span>
<span id="cb1-22"><a href="#cb1-22" tabindex="-1"></a>    <span class="at">plot.title =</span> <span class="fu">element_text</span>(<span class="at">size=</span><span class="dv">10</span>)</span>
<span id="cb1-23"><a href="#cb1-23" tabindex="-1"></a>  )</span></code></pre></div>
<p><img src="parallel_files/figure-html/unnamed-chunk-1-1.png" width="960" style="display: block; margin: auto;" /></p>
<p><em>Note</em>: Parallel plot is the equivalent of a <a
href="https://www.data-to-viz.com/caveat/spider.html">spider chart</a>,
but with cartesian coordinates. Thus, it is often prefered.</p>
</div>
<div id="what-for" class="section level1">
<h1>What for</h1>
<hr />
<p>A parallel plot allows to study the features of samples for
<code>several quantitative</code> variables. Its strength is that the
variables can even be completely different: different
<code>ranges</code> and even different <code>units</code>.</p>
<p>In the graphic above flower features were grouped in species, and all
variables were normalized and sharing the same unit (cm). Here is
another example where diamonds are compared for 4 variables that share
different units, like the price in $ or depth in %. Note the use of
scaling to be able to compare them.</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb2-1"><a href="#cb2-1" tabindex="-1"></a>diamonds <span class="sc">%&gt;%</span></span>
<span id="cb2-2"><a href="#cb2-2" tabindex="-1"></a>  <span class="fu">sample_n</span>(<span class="dv">10</span>) <span class="sc">%&gt;%</span></span>
<span id="cb2-3"><a href="#cb2-3" tabindex="-1"></a>    <span class="fu">ggparcoord</span>(</span>
<span id="cb2-4"><a href="#cb2-4" tabindex="-1"></a>      <span class="at">columns =</span> <span class="fu">c</span>(<span class="dv">1</span>,<span class="dv">5</span><span class="sc">:</span><span class="dv">7</span>),</span>
<span id="cb2-5"><a href="#cb2-5" tabindex="-1"></a>      <span class="at">groupColumn =</span> <span class="dv">2</span>,</span>
<span id="cb2-6"><a href="#cb2-6" tabindex="-1"></a>      <span class="co">#order = &quot;anyClass&quot;,</span></span>
<span id="cb2-7"><a href="#cb2-7" tabindex="-1"></a>      <span class="at">showPoints =</span> <span class="cn">TRUE</span>,</span>
<span id="cb2-8"><a href="#cb2-8" tabindex="-1"></a>      <span class="at">title =</span> <span class="st">&quot;Diamonds features&quot;</span>,</span>
<span id="cb2-9"><a href="#cb2-9" tabindex="-1"></a>      <span class="at">alphaLines =</span> <span class="fl">0.3</span></span>
<span id="cb2-10"><a href="#cb2-10" tabindex="-1"></a>      ) <span class="sc">+</span></span>
<span id="cb2-11"><a href="#cb2-11" tabindex="-1"></a>    <span class="fu">scale_color_viridis</span>(<span class="at">discrete=</span><span class="cn">TRUE</span>) <span class="sc">+</span></span>
<span id="cb2-12"><a href="#cb2-12" tabindex="-1"></a>    <span class="fu">theme_ipsum</span>()<span class="sc">+</span></span>
<span id="cb2-13"><a href="#cb2-13" tabindex="-1"></a>    <span class="fu">theme</span>(</span>
<span id="cb2-14"><a href="#cb2-14" tabindex="-1"></a>      <span class="at">plot.title =</span> <span class="fu">element_text</span>(<span class="at">size=</span><span class="dv">10</span>)</span>
<span id="cb2-15"><a href="#cb2-15" tabindex="-1"></a>    )</span></code></pre></div>
<p><img src="parallel_files/figure-html/unnamed-chunk-2-1.png" width="864" style="display: block; margin: auto;" /></p>
</div>
<div id="variation" class="section level1">
<h1>Variation</h1>
<hr />
<p>Here is an overview of the parallel coordinates features you can play
with:</p>
<ul>
<li><em>Scaling</em> - scaling transforms the raw data to a new scale
that is common with other variables. It is a crucial step to compare
variables that do not have the same unit, but can also help otherwise as
shown in the example below:</li>
</ul>
<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" tabindex="-1"></a><span class="co"># Plot</span></span>
<span id="cb3-2"><a href="#cb3-2" tabindex="-1"></a>p1 <span class="ot">&lt;-</span> data <span class="sc">%&gt;%</span></span>
<span id="cb3-3"><a href="#cb3-3" tabindex="-1"></a>  <span class="fu">ggparcoord</span>(</span>
<span id="cb3-4"><a href="#cb3-4" tabindex="-1"></a>    <span class="at">columns =</span> <span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>, <span class="at">groupColumn =</span> <span class="dv">5</span>, <span class="at">order =</span> <span class="st">&quot;anyClass&quot;</span>,</span>
<span id="cb3-5"><a href="#cb3-5" tabindex="-1"></a>    <span class="at">scale=</span><span class="st">&quot;globalminmax&quot;</span>,</span>
<span id="cb3-6"><a href="#cb3-6" tabindex="-1"></a>    <span class="at">showPoints =</span> <span class="cn">TRUE</span>,</span>
<span id="cb3-7"><a href="#cb3-7" tabindex="-1"></a>    <span class="at">title =</span> <span class="st">&quot;No scaling&quot;</span>,</span>
<span id="cb3-8"><a href="#cb3-8" tabindex="-1"></a>    <span class="at">alphaLines =</span> <span class="fl">0.3</span></span>
<span id="cb3-9"><a href="#cb3-9" tabindex="-1"></a>    ) <span class="sc">+</span></span>
<span id="cb3-10"><a href="#cb3-10" tabindex="-1"></a>  <span class="fu">scale_color_viridis</span>(<span class="at">discrete=</span><span class="cn">TRUE</span>) <span class="sc">+</span></span>
<span id="cb3-11"><a href="#cb3-11" tabindex="-1"></a>  <span class="fu">theme_ipsum</span>()<span class="sc">+</span></span>
<span id="cb3-12"><a href="#cb3-12" tabindex="-1"></a>  <span class="fu">theme</span>(</span>
<span id="cb3-13"><a href="#cb3-13" tabindex="-1"></a>    <span class="at">legend.position=</span><span class="st">&quot;none&quot;</span>,</span>
<span id="cb3-14"><a href="#cb3-14" tabindex="-1"></a>    <span class="at">plot.title =</span> <span class="fu">element_text</span>(<span class="at">size=</span><span class="dv">10</span>)</span>
<span id="cb3-15"><a href="#cb3-15" tabindex="-1"></a>  ) <span class="sc">+</span></span>
<span id="cb3-16"><a href="#cb3-16" tabindex="-1"></a>  <span class="fu">xlab</span>(<span class="st">&quot;&quot;</span>)</span>
<span id="cb3-17"><a href="#cb3-17" tabindex="-1"></a></span>
<span id="cb3-18"><a href="#cb3-18" tabindex="-1"></a>p2 <span class="ot">&lt;-</span> data <span class="sc">%&gt;%</span></span>
<span id="cb3-19"><a href="#cb3-19" tabindex="-1"></a>  <span class="fu">ggparcoord</span>(</span>
<span id="cb3-20"><a href="#cb3-20" tabindex="-1"></a>    <span class="at">columns =</span> <span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>, <span class="at">groupColumn =</span> <span class="dv">5</span>, <span class="at">order =</span> <span class="st">&quot;anyClass&quot;</span>,</span>
<span id="cb3-21"><a href="#cb3-21" tabindex="-1"></a>    <span class="at">scale=</span><span class="st">&quot;uniminmax&quot;</span>,</span>
<span id="cb3-22"><a href="#cb3-22" tabindex="-1"></a>    <span class="at">showPoints =</span> <span class="cn">TRUE</span>,</span>
<span id="cb3-23"><a href="#cb3-23" tabindex="-1"></a>    <span class="at">title =</span> <span class="st">&quot;Standardize to Min = 0 and Max = 1&quot;</span>,</span>
<span id="cb3-24"><a href="#cb3-24" tabindex="-1"></a>    <span class="at">alphaLines =</span> <span class="fl">0.3</span></span>
<span id="cb3-25"><a href="#cb3-25" tabindex="-1"></a>    ) <span class="sc">+</span></span>
<span id="cb3-26"><a href="#cb3-26" tabindex="-1"></a>  <span class="fu">scale_color_viridis</span>(<span class="at">discrete=</span><span class="cn">TRUE</span>) <span class="sc">+</span></span>
<span id="cb3-27"><a href="#cb3-27" tabindex="-1"></a>  <span class="fu">theme_ipsum</span>()<span class="sc">+</span></span>
<span id="cb3-28"><a href="#cb3-28" tabindex="-1"></a>  <span class="fu">theme</span>(</span>
<span id="cb3-29"><a href="#cb3-29" tabindex="-1"></a>    <span class="at">legend.position=</span><span class="st">&quot;none&quot;</span>,</span>
<span id="cb3-30"><a href="#cb3-30" tabindex="-1"></a>    <span class="at">plot.title =</span> <span class="fu">element_text</span>(<span class="at">size=</span><span class="dv">10</span>)</span>
<span id="cb3-31"><a href="#cb3-31" tabindex="-1"></a>  ) <span class="sc">+</span></span>
<span id="cb3-32"><a href="#cb3-32" tabindex="-1"></a>  <span class="fu">xlab</span>(<span class="st">&quot;&quot;</span>)</span>
<span id="cb3-33"><a href="#cb3-33" tabindex="-1"></a></span>
<span id="cb3-34"><a href="#cb3-34" tabindex="-1"></a></span>
<span id="cb3-35"><a href="#cb3-35" tabindex="-1"></a>p3 <span class="ot">&lt;-</span> data <span class="sc">%&gt;%</span></span>
<span id="cb3-36"><a href="#cb3-36" tabindex="-1"></a>  <span class="fu">ggparcoord</span>(</span>
<span id="cb3-37"><a href="#cb3-37" tabindex="-1"></a>    <span class="at">columns =</span> <span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>, <span class="at">groupColumn =</span> <span class="dv">5</span>, <span class="at">order =</span> <span class="st">&quot;anyClass&quot;</span>,</span>
<span id="cb3-38"><a href="#cb3-38" tabindex="-1"></a>    <span class="at">scale=</span><span class="st">&quot;std&quot;</span>,</span>
<span id="cb3-39"><a href="#cb3-39" tabindex="-1"></a>    <span class="at">showPoints =</span> <span class="cn">TRUE</span>,</span>
<span id="cb3-40"><a href="#cb3-40" tabindex="-1"></a>    <span class="at">title =</span> <span class="st">&quot;Normalize univariately (substract mean &amp; divide by sd)&quot;</span>,</span>
<span id="cb3-41"><a href="#cb3-41" tabindex="-1"></a>    <span class="at">alphaLines =</span> <span class="fl">0.3</span></span>
<span id="cb3-42"><a href="#cb3-42" tabindex="-1"></a>    ) <span class="sc">+</span></span>
<span id="cb3-43"><a href="#cb3-43" tabindex="-1"></a>  <span class="fu">scale_color_viridis</span>(<span class="at">discrete=</span><span class="cn">TRUE</span>) <span class="sc">+</span></span>
<span id="cb3-44"><a href="#cb3-44" tabindex="-1"></a>  <span class="fu">theme_ipsum</span>()<span class="sc">+</span></span>
<span id="cb3-45"><a href="#cb3-45" tabindex="-1"></a>  <span class="fu">theme</span>(</span>
<span id="cb3-46"><a href="#cb3-46" tabindex="-1"></a>    <span class="at">legend.position=</span><span class="st">&quot;none&quot;</span>,</span>
<span id="cb3-47"><a href="#cb3-47" tabindex="-1"></a>    <span class="at">plot.title =</span> <span class="fu">element_text</span>(<span class="at">size=</span><span class="dv">10</span>)</span>
<span id="cb3-48"><a href="#cb3-48" tabindex="-1"></a>  ) <span class="sc">+</span></span>
<span id="cb3-49"><a href="#cb3-49" tabindex="-1"></a>  <span class="fu">xlab</span>(<span class="st">&quot;&quot;</span>)</span>
<span id="cb3-50"><a href="#cb3-50" tabindex="-1"></a></span>
<span id="cb3-51"><a href="#cb3-51" tabindex="-1"></a></span>
<span id="cb3-52"><a href="#cb3-52" tabindex="-1"></a>p4 <span class="ot">&lt;-</span> data <span class="sc">%&gt;%</span></span>
<span id="cb3-53"><a href="#cb3-53" tabindex="-1"></a>  <span class="fu">ggparcoord</span>(</span>
<span id="cb3-54"><a href="#cb3-54" tabindex="-1"></a>    <span class="at">columns =</span> <span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>, <span class="at">groupColumn =</span> <span class="dv">5</span>, <span class="at">order =</span> <span class="st">&quot;anyClass&quot;</span>,</span>
<span id="cb3-55"><a href="#cb3-55" tabindex="-1"></a>    <span class="at">scale=</span><span class="st">&quot;center&quot;</span>,</span>
<span id="cb3-56"><a href="#cb3-56" tabindex="-1"></a>    <span class="at">showPoints =</span> <span class="cn">TRUE</span>,</span>
<span id="cb3-57"><a href="#cb3-57" tabindex="-1"></a>    <span class="at">title =</span> <span class="st">&quot;Standardize and center variables&quot;</span>,</span>
<span id="cb3-58"><a href="#cb3-58" tabindex="-1"></a>    <span class="at">alphaLines =</span> <span class="fl">0.3</span></span>
<span id="cb3-59"><a href="#cb3-59" tabindex="-1"></a>    ) <span class="sc">+</span></span>
<span id="cb3-60"><a href="#cb3-60" tabindex="-1"></a>  <span class="fu">scale_color_viridis</span>(<span class="at">discrete=</span><span class="cn">TRUE</span>) <span class="sc">+</span></span>
<span id="cb3-61"><a href="#cb3-61" tabindex="-1"></a>  <span class="fu">theme_ipsum</span>()<span class="sc">+</span></span>
<span id="cb3-62"><a href="#cb3-62" tabindex="-1"></a>  <span class="fu">theme</span>(</span>
<span id="cb3-63"><a href="#cb3-63" tabindex="-1"></a>    <span class="at">legend.position=</span><span class="st">&quot;none&quot;</span>,</span>
<span id="cb3-64"><a href="#cb3-64" tabindex="-1"></a>    <span class="at">plot.title =</span> <span class="fu">element_text</span>(<span class="at">size=</span><span class="dv">10</span>)</span>
<span id="cb3-65"><a href="#cb3-65" tabindex="-1"></a>  ) <span class="sc">+</span></span>
<span id="cb3-66"><a href="#cb3-66" tabindex="-1"></a>  <span class="fu">xlab</span>(<span class="st">&quot;&quot;</span>)</span>
<span id="cb3-67"><a href="#cb3-67" tabindex="-1"></a></span>
<span id="cb3-68"><a href="#cb3-68" tabindex="-1"></a></span>
<span id="cb3-69"><a href="#cb3-69" tabindex="-1"></a>p1 <span class="sc">+</span> p2 <span class="sc">+</span> p3 <span class="sc">+</span> p4 <span class="sc">+</span> <span class="fu">plot_layout</span>(<span class="at">ncol =</span> <span class="dv">2</span>)</span></code></pre></div>
<p><img src="parallel_files/figure-html/unnamed-chunk-3-1.png" width="960" style="display: block; margin: auto;" /></p>
<p><br><br></p>
<ul>
<li><em>Axis order</em> - optimizing the order of vertical axis can
decrease the <code>clutter</code> of your parallel plot. Basically, the
goal is to minimize the number of cross between series. On the next
figure, the left plot is much harder to understand the the right one.
Only variable order is different.</li>
</ul>
<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb4-1"><a href="#cb4-1" tabindex="-1"></a><span class="co"># Plot</span></span>
<span id="cb4-2"><a href="#cb4-2" tabindex="-1"></a>p1 <span class="ot">&lt;-</span> data <span class="sc">%&gt;%</span></span>
<span id="cb4-3"><a href="#cb4-3" tabindex="-1"></a>  <span class="fu">ggparcoord</span>(</span>
<span id="cb4-4"><a href="#cb4-4" tabindex="-1"></a>    <span class="at">columns =</span> <span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>, <span class="at">groupColumn =</span> <span class="dv">5</span>, <span class="at">order =</span> <span class="fu">c</span>(<span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>),</span>
<span id="cb4-5"><a href="#cb4-5" tabindex="-1"></a>    <span class="at">showPoints =</span> <span class="cn">TRUE</span>,</span>
<span id="cb4-6"><a href="#cb4-6" tabindex="-1"></a>    <span class="at">title =</span> <span class="st">&quot;Original&quot;</span>,</span>
<span id="cb4-7"><a href="#cb4-7" tabindex="-1"></a>    <span class="at">alphaLines =</span> <span class="fl">0.3</span></span>
<span id="cb4-8"><a href="#cb4-8" tabindex="-1"></a>    ) <span class="sc">+</span></span>
<span id="cb4-9"><a href="#cb4-9" tabindex="-1"></a>  <span class="fu">scale_color_viridis</span>(<span class="at">discrete=</span><span class="cn">TRUE</span>) <span class="sc">+</span></span>
<span id="cb4-10"><a href="#cb4-10" tabindex="-1"></a>  <span class="fu">theme_ipsum</span>()<span class="sc">+</span></span>
<span id="cb4-11"><a href="#cb4-11" tabindex="-1"></a>  <span class="fu">theme</span>(</span>
<span id="cb4-12"><a href="#cb4-12" tabindex="-1"></a>    <span class="at">legend.position=</span><span class="st">&quot;Default&quot;</span>,</span>
<span id="cb4-13"><a href="#cb4-13" tabindex="-1"></a>    <span class="at">plot.title =</span> <span class="fu">element_text</span>(<span class="at">size=</span><span class="dv">10</span>)</span>
<span id="cb4-14"><a href="#cb4-14" tabindex="-1"></a>  ) <span class="sc">+</span></span>
<span id="cb4-15"><a href="#cb4-15" tabindex="-1"></a>  <span class="fu">xlab</span>(<span class="st">&quot;&quot;</span>)</span>
<span id="cb4-16"><a href="#cb4-16" tabindex="-1"></a></span>
<span id="cb4-17"><a href="#cb4-17" tabindex="-1"></a>p2 <span class="ot">&lt;-</span> data <span class="sc">%&gt;%</span></span>
<span id="cb4-18"><a href="#cb4-18" tabindex="-1"></a>  <span class="fu">ggparcoord</span>(</span>
<span id="cb4-19"><a href="#cb4-19" tabindex="-1"></a>    <span class="at">columns =</span> <span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>, <span class="at">groupColumn =</span> <span class="dv">5</span>, <span class="at">order =</span> <span class="st">&quot;anyClass&quot;</span>,</span>
<span id="cb4-20"><a href="#cb4-20" tabindex="-1"></a>    <span class="at">showPoints =</span> <span class="cn">TRUE</span>,</span>
<span id="cb4-21"><a href="#cb4-21" tabindex="-1"></a>    <span class="at">title =</span> <span class="st">&quot;Re-ordered&quot;</span>,</span>
<span id="cb4-22"><a href="#cb4-22" tabindex="-1"></a>    <span class="at">alphaLines =</span> <span class="fl">0.3</span></span>
<span id="cb4-23"><a href="#cb4-23" tabindex="-1"></a>    ) <span class="sc">+</span></span>
<span id="cb4-24"><a href="#cb4-24" tabindex="-1"></a>  <span class="fu">scale_color_viridis</span>(<span class="at">discrete=</span><span class="cn">TRUE</span>) <span class="sc">+</span></span>
<span id="cb4-25"><a href="#cb4-25" tabindex="-1"></a>  <span class="fu">theme_ipsum</span>()<span class="sc">+</span></span>
<span id="cb4-26"><a href="#cb4-26" tabindex="-1"></a>  <span class="fu">theme</span>(</span>
<span id="cb4-27"><a href="#cb4-27" tabindex="-1"></a>    <span class="at">legend.position=</span><span class="st">&quot;none&quot;</span>,</span>
<span id="cb4-28"><a href="#cb4-28" tabindex="-1"></a>    <span class="at">plot.title =</span> <span class="fu">element_text</span>(<span class="at">size=</span><span class="dv">10</span>)</span>
<span id="cb4-29"><a href="#cb4-29" tabindex="-1"></a>  ) <span class="sc">+</span></span>
<span id="cb4-30"><a href="#cb4-30" tabindex="-1"></a>  <span class="fu">xlab</span>(<span class="st">&quot;&quot;</span>)</span>
<span id="cb4-31"><a href="#cb4-31" tabindex="-1"></a></span>
<span id="cb4-32"><a href="#cb4-32" tabindex="-1"></a>p1 <span class="sc">+</span> p2</span></code></pre></div>
<p><img src="parallel_files/figure-html/unnamed-chunk-4-1.png" width="864" style="display: block; margin: auto;" /></p>
<p><br></p>
<ul>
<li><em>Highlighting</em> - a parallel plot being a <a
href="https://www.data-to-viz.com/graph/line.html">line plot</a>, the
main caveat is the <a
href="https://www.data-to-viz.com/caveat/spaghetti.html">spaghetti
chart</a> where too many lines overlap, making the chart unreadable.
Several workaround exist as described in <a
href="https://www.data-to-viz.com/caveat/spaghetti.html">this page</a>.
A solution is to highlight a specific sample or a specific group of
interest:</li>
</ul>
<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb5-1"><a href="#cb5-1" tabindex="-1"></a><span class="co"># Plot</span></span>
<span id="cb5-2"><a href="#cb5-2" tabindex="-1"></a>data <span class="sc">%&gt;%</span></span>
<span id="cb5-3"><a href="#cb5-3" tabindex="-1"></a>  <span class="fu">ggparcoord</span>(</span>
<span id="cb5-4"><a href="#cb5-4" tabindex="-1"></a>    <span class="at">columns =</span> <span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>, <span class="at">groupColumn =</span> <span class="dv">5</span>, <span class="at">order =</span> <span class="st">&quot;anyClass&quot;</span>,</span>
<span id="cb5-5"><a href="#cb5-5" tabindex="-1"></a>    <span class="at">showPoints =</span> <span class="cn">TRUE</span>,</span>
<span id="cb5-6"><a href="#cb5-6" tabindex="-1"></a>    <span class="at">title =</span> <span class="st">&quot;Original&quot;</span>,</span>
<span id="cb5-7"><a href="#cb5-7" tabindex="-1"></a>    <span class="at">alphaLines =</span> <span class="fl">0.3</span></span>
<span id="cb5-8"><a href="#cb5-8" tabindex="-1"></a>    ) <span class="sc">+</span></span>
<span id="cb5-9"><a href="#cb5-9" tabindex="-1"></a>  <span class="fu">scale_color_manual</span>(<span class="at">values=</span><span class="fu">c</span>( <span class="st">&quot;#69b3a2&quot;</span>, <span class="st">&quot;grey&quot;</span>, <span class="st">&quot;grey&quot;</span>) ) <span class="sc">+</span></span>
<span id="cb5-10"><a href="#cb5-10" tabindex="-1"></a>  <span class="fu">theme_ipsum</span>()<span class="sc">+</span></span>
<span id="cb5-11"><a href="#cb5-11" tabindex="-1"></a>  <span class="fu">theme</span>(</span>
<span id="cb5-12"><a href="#cb5-12" tabindex="-1"></a>    <span class="at">legend.position=</span><span class="st">&quot;Default&quot;</span>,</span>
<span id="cb5-13"><a href="#cb5-13" tabindex="-1"></a>    <span class="at">plot.title =</span> <span class="fu">element_text</span>(<span class="at">size=</span><span class="dv">10</span>)</span>
<span id="cb5-14"><a href="#cb5-14" tabindex="-1"></a>  ) <span class="sc">+</span></span>
<span id="cb5-15"><a href="#cb5-15" tabindex="-1"></a>  <span class="fu">xlab</span>(<span class="st">&quot;&quot;</span>)</span></code></pre></div>
<p><img src="parallel_files/figure-html/unnamed-chunk-5-1.png" width="672" style="display: block; margin: auto;" /></p>
</div>
<div id="mistake" class="section level1">
<h1>Common mistakes</h1>
<hr />
<ul>
<li>Like for <a href="https://www.data-to-viz.com/graph/line.html">line
plot</a>, displaying too many samples result in a cluttered and
unreadable <a
href="https://www.data-to-viz.com/caveat/spaghetti.html">spaghetti
chart</a>.</li>
<li>Sort the variables on the X axis, it makes sense to avoid crosses in
sample lines.</li>
<li>Try different scalings to find the one fitting your data best.</li>
</ul>
</div>
<div id="related" class="section level1">
<h1>Related</h1>
<hr />
<div class="row">
<div class="col-lg-3 col-md-6 col-sm-6">
<a href="http://www.data-to-viz.com/graph/barplot.html" class="btn btn-primary mybtnrelated" style="margin-bottom:4px;white-space: normal !important;">
<img  src="https://github.com/holtzy/data_to_viz/raw/master/img/section/BarSmall.png">
<p class="mytitlerelated">
Barplot
</p>
<p class="mytextrelated">
Represents the value of entities using bar of various length.
</p>
</a>
</div>
<div class="col-lg-3 col-md-6 col-sm-6">
<a href="http://www.data-to-viz.com/caveat/spider.html" class="btn btn-primary mybtnrelated" style="margin-bottom:4px;white-space: normal !important;">
<img  src="https://github.com/holtzy/data_to_viz/raw/master/img/section/SpiderSmall.png">
<p class="mytitlerelated">
Spider / Radar
</p>
<p class="mytextrelated">
One or more series of values over multiple common quantitative
variables. Axis are joint on the middle of the figure.
</p>
</a>
</div>
<div class="col-lg-3 col-md-6 col-sm-6">
<a href="http://www.data-to-viz.com/graph/wordcloud.html" class="btn btn-primary mybtnrelated" style="margin-bottom:4px;white-space: normal !important;">
<img  src="https://github.com/holtzy/data_to_viz/raw/master/img/section/WordCloudSmall.png">
<p class="mytitlerelated">
Wordcloud
</p>
<p class="mytextrelated">
A visual representation of text data, where word size is relative to
their frequency.
</p>
</a>
</div>
<div class="col-lg-3 col-md-6 col-sm-6">
<a href="http://www.data-to-viz.com/caveat/boxplot.html" class="btn btn-primary mybtnrelated" style="margin-bottom:4px;white-space: normal !important;">
<img  src="https://github.com/holtzy/data_to_viz/raw/master/img/section/Box1Small.png">
<p class="mytitlerelated">
Boxplot
</p>
<p class="mytextrelated">
Summarize the distribution of several numeric variables using boxes. Use
it if you have a limited dataset size.
</p>
</a>
</div>
</div>
</div>
<div id="code" class="section level1">
<h1>Build your own</h1>
<hr />
<p>The <a
href="https://www.r-graph-gallery.com/parallel-plot.html">R</a>, <a
href="https://www.python-graph-gallery.com/parallel-plot/">Python</a>,
<a href="https://www.react-graph-gallery.com/parallel-plot">React</a>
and <a href="https://d3-graph-gallery.com/parallel.html">D3</a> graph
galleries are 4 websites providing hundreds of chart example, always
providing the reproducible code. Click the button below to see how to
build the chart you need with your favorite programing language.</p>
<p>
<a href="https://www.r-graph-gallery.com/parallel-plot.html" class="btn btn-primary">R
graph gallery</a>
<a href="https://python-graph-gallery.com/parallel-plot/" class="btn btn-primary">Python
gallery</a>
<a href="https://www.react-graph-gallery.com/parallel-plot" class="btn btn-primary">React
gallery</a>
<a href="https://d3-graph-gallery.com/parallel.html" class="btn btn-primary">D3
gallery</a>
</p>
</div>
</div>

          <section
            id="form"
            style="
              margin-top: 70px;
              padding-bottom: 70px;
              padding-top: 70px;
              background-color: #f8f9fa;
            "
          >
            <div class="container">
              <div
                style="
                  display: flex;
                  flex-direction: column;
                  align-items: center;
                "
              >
                <h2 style="font-size: 44px" class="text-center">
                  Dataviz decision tree
                </h2>
                <p
                  class="text-center"
                  style="max-width: 600px; font-size: 18px"
                >
                  <a href="https://www.data-to-viz.com">Data To Viz</a> is a
                  comprehensive <b>classification of chart types</b> organized
                  by data input format. Get a high-resolution version of our
                  decision tree delivered to your inbox now!
                </p>
                <div
                  style="
                    margin-top: -50px;
                    width: 100%;
                    display: flex;
                    justify-content: center;
                  "
                >
                  <script
                    async
                    data-uid="8010f15fd2"
                    src="https://prodigious-trailblazer-3628.ck.page/8010f15fd2/index.js"
                  ></script>
                </div>
                <br />
                <div class="text-center">
                  <img
                    class="img-fluid"
                    src="../img/poster/poster_small.png"
                    alt="High Resolution Poster"
                    style="max-width: 400px"
                  />
                </div>
              </div>
            </div>
          </section>

           &nbsp;
<hr />
<p style="text-align: center;">A work by <a href="https://www.yan-holtz.com/">Yan Holtz</a> for <a href="https://data-to-viz.com">data-to-viz.com</a></p>

<!-- Add icon library -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

<!-- Add font awesome icons -->
<p style="text-align: center;">
	<a href="https://twitter.com/r_graph_gallery?lang=en" class="fa fa-twitter"></a>
	<a href="https://www.linkedin.com/in/yan-holtz-2477534a/" class="fa fa-linkedin"></a>
	<a href="https://github.com/holtzy/" class="fa fa-github"></a>
</p>

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-79254642-3"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-79254642-3');
</script>
<script>
var getOutboundLink = function(url) {
	gtag('event', 'click', {
		'event_category': 'outbound',
		'event_label': url,
		'transport_type': 'beacon',
		'event_callback': function(){document.location = url;}
	});
}
</script>

&nbsp;                </div>

    <script>

      // add bootstrap table styles to pandoc tables
      function bootstrapStylePandocTables() {
        $('tr.header').parent('thead').parent('table').addClass('table table-condensed');
      }
      $(document).ready(function () {
        bootstrapStylePandocTables();
      });

          </script>
       </body>
</html>
